GCancellable *cancellable,
GError **error)
{
- gboolean ret = FALSE;
g_autoptr(GBytes) bytes = NULL;
- g_autofree char *ret_contents = NULL;
- gsize len;
-
if (!_ostree_fetcher_mirrored_request_to_membuf (fetcher, mirrorlist,
filename, TRUE, FALSE,
&bytes,
OSTREE_MAX_METADATA_SIZE,
cancellable, error))
- goto out;
+ return FALSE;
- ret_contents = g_bytes_unref_to_data (bytes, &len);
- bytes = NULL;
+ gsize len;
+ g_autofree char *ret_contents = g_bytes_unref_to_data (g_steal_pointer (&bytes), &len);
if (!g_utf8_validate (ret_contents, -1, NULL))
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Invalid UTF-8");
- goto out;
- }
+ return glnx_throw (error, "Invalid UTF-8");
- ret = TRUE;
ot_transfer_out_value (out_contents, &ret_contents);
- out:
- return ret;
+ return TRUE;
}
static gboolean
GError **error)
{
g_autofree char *commitpartial_path = _ostree_get_commitpartial_path (checksum);
- glnx_fd_close int fd = -1;
-
- fd = openat (pull_data->repo->repo_dir_fd, commitpartial_path, O_EXCL | O_CREAT | O_WRONLY | O_CLOEXEC | O_NOCTTY, 0644);
+ glnx_fd_close int fd = openat (pull_data->repo->repo_dir_fd, commitpartial_path, O_EXCL | O_CREAT | O_WRONLY | O_CLOEXEC | O_NOCTTY, 0644);
if (fd == -1)
{
if (errno != EEXIST)
- {
- glnx_set_error_from_errno (error);
- return FALSE;
- }
+ return glnx_throw_errno_prefix (error, "open(%s)", commitpartial_path);
}
return TRUE;
}
const char *basename,
gboolean basename_is_dir)
{
- int i;
- g_autofree char *file = NULL;
-
if (pull_data->dirs == NULL)
return TRUE;
- file = g_strconcat (path, basename, NULL);
+ g_autofree char *file = g_strconcat (path, basename, NULL);
- for (i = 0; i < pull_data->dirs->len; i++)
+ for (guint i = 0; i < pull_data->dirs->len; i++)
{
const char *pull_dir = g_ptr_array_index (pull_data->dirs, i);
if (matches_pull_dir (file, pull_dir, basename_is_dir))
GCancellable *cancellable,
GError **error)
{
- gboolean ret = FALSE;
- int i, n;
- g_autoptr(GVariant) tree = NULL;
- g_autoptr(GVariant) files_variant = NULL;
- g_autoptr(GVariant) dirs_variant = NULL;
- const char *dirname = NULL;
-
if (recursion_depth > OSTREE_MAX_RECURSION)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Exceeded maximum recursion");
- goto out;
- }
+ return glnx_throw (error, "Exceeded maximum recursion");
+ g_autoptr(GVariant) tree = NULL;
if (!ostree_repo_load_variant (pull_data->repo, OSTREE_OBJECT_TYPE_DIR_TREE, checksum,
&tree, error))
- goto out;
+ return FALSE;
/* PARSE OSTREE_SERIALIZED_TREE_VARIANT */
- files_variant = g_variant_get_child_value (tree, 0);
- dirs_variant = g_variant_get_child_value (tree, 1);
-
- n = g_variant_n_children (files_variant);
- for (i = 0; i < n; i++)
+ g_autoptr(GVariant) files_variant = g_variant_get_child_value (tree, 0);
+ const guint n = g_variant_n_children (files_variant);
+ for (guint i = 0; i < n; i++)
{
const char *filename;
gboolean file_is_stored;
g_variant_get_child (files_variant, i, "(&s@ay)", &filename, &csum);
if (!ot_util_filename_validate (filename, error))
- goto out;
+ return FALSE;
/* Skip files if we're traversing a request only directory, unless it exactly
* matches the path */
if (!ostree_repo_has_object (pull_data->repo, OSTREE_OBJECT_TYPE_FILE, file_checksum,
&file_is_stored, cancellable, error))
- goto out;
+ return FALSE;
if (!file_is_stored && pull_data->remote_repo_local)
{
if (!ostree_repo_import_object_from_with_trust (pull_data->repo, pull_data->remote_repo_local,
OSTREE_OBJECT_TYPE_FILE, file_checksum, !pull_data->is_untrusted,
cancellable, error))
- goto out;
+ return FALSE;
}
else if (!file_is_stored && !g_hash_table_lookup (pull_data->requested_content, file_checksum))
{
}
}
- n = g_variant_n_children (dirs_variant);
-
- for (i = 0; i < n; i++)
+ g_autoptr(GVariant) dirs_variant = g_variant_get_child_value (tree, 1);
+ const guint m = g_variant_n_children (dirs_variant);
+ for (guint i = 0; i < m; i++)
{
+ const char *dirname = NULL;
g_autoptr(GVariant) tree_csum = NULL;
g_autoptr(GVariant) meta_csum = NULL;
- const guchar *tree_csum_bytes;
- const guchar *meta_csum_bytes;
- g_autofree char *subpath = NULL;
-
g_variant_get_child (dirs_variant, i, "(&s@ay@ay)",
&dirname, &tree_csum, &meta_csum);
if (!ot_util_filename_validate (dirname, error))
- goto out;
+ return FALSE;
if (!pull_matches_subdir (pull_data, path, dirname, TRUE))
continue;
- tree_csum_bytes = ostree_checksum_bytes_peek_validate (tree_csum, error);
+ const guchar *tree_csum_bytes = ostree_checksum_bytes_peek_validate (tree_csum, error);
if (tree_csum_bytes == NULL)
- goto out;
+ return FALSE;
- meta_csum_bytes = ostree_checksum_bytes_peek_validate (meta_csum, error);
+ const guchar *meta_csum_bytes = ostree_checksum_bytes_peek_validate (meta_csum, error);
if (meta_csum_bytes == NULL)
- goto out;
-
- subpath = g_strconcat (path, dirname, "/", NULL);
+ return FALSE;
+ g_autofree char *subpath = g_strconcat (path, dirname, "/", NULL);
queue_scan_one_metadata_object_c (pull_data, tree_csum_bytes,
OSTREE_OBJECT_TYPE_DIR_TREE, subpath, recursion_depth + 1);
queue_scan_one_metadata_object_c (pull_data, meta_csum_bytes,
OSTREE_OBJECT_TYPE_DIR_META, subpath, recursion_depth + 1);
}
- ret = TRUE;
- out:
- return ret;
+ return TRUE;
}
static gboolean
GCancellable *cancellable,
GError **error)
{
- gboolean ret = FALSE;
+ g_autofree char *filename = g_build_filename ("refs", "heads", ref, NULL);
g_autofree char *ret_contents = NULL;
- g_autofree char *filename = NULL;
-
- filename = g_build_filename ("refs", "heads", ref, NULL);
-
if (!fetch_mirrored_uri_contents_utf8_sync (pull_data->fetcher,
pull_data->meta_mirrorlist,
filename, &ret_contents,
cancellable, error))
- goto out;
+ return FALSE;
g_strchomp (ret_contents);
if (!ostree_validate_checksum_string (ret_contents, error))
- goto out;
+ return FALSE;
- ret = TRUE;
ot_transfer_out_value (out_contents, &ret_contents);
- out:
- return ret;
+ return TRUE;
}
static gboolean
gsize *out_size,
GError **error)
{
- gboolean ret = FALSE;
g_autoptr(GVariant) refs = g_variant_get_child_value (pull_data->summary, 0);
- g_autoptr(GVariant) refdata = NULL;
- g_autoptr(GVariant) reftargetdata = NULL;
- guint64 commit_size;
- g_autoptr(GVariant) commit_csum_v = NULL;
int i;
-
if (!ot_variant_bsearch_str (refs, ref, &i))
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "No such branch '%s' in repository summary",
- ref);
- goto out;
- }
-
- refdata = g_variant_get_child_value (refs, i);
- reftargetdata = g_variant_get_child_value (refdata, 1);
+ return glnx_throw (error, "No such branch '%s' in repository summary", ref);
+
+ g_autoptr(GVariant) refdata = g_variant_get_child_value (refs, i);
+ g_autoptr(GVariant) reftargetdata = g_variant_get_child_value (refdata, 1);
+ guint64 commit_size;
+ g_autoptr(GVariant) commit_csum_v = NULL;
g_variant_get (reftargetdata, "(t@ay@a{sv})", &commit_size, &commit_csum_v, NULL);
if (!ostree_validate_structureof_csum_v (commit_csum_v, error))
- goto out;
+ return FALSE;
- ret = TRUE;
*out_checksum = ostree_checksum_from_bytes_v (commit_csum_v);
*out_size = commit_size;
- out:
- return ret;
+ return TRUE;
}
static void
g_autofree char *checksum = NULL;
g_autofree char *checksum_obj = NULL;
- if (!ostree_repo_write_content_finish ((OstreeRepo*)object, result,
+ if (!ostree_repo_write_content_finish ((OstreeRepo*)object, result,
&csum, error))
goto out;